'use strict';

//1.一个有点挑战的文件服务器（只能查到二级目录）

const
    http = require('http'),
    path = require('path'),
    fs = require('fs'),
    port = 520;

let server = http.createServer((req, res) => {
    let reqPath = req.url;
    console.log(reqPath);

    // 解析当前目录
    let currentPath = path.resolve('.');
    console.log(currentPath);

    //获取目录下所有文件名称（数组）
    let files = fs.readdirSync(currentPath);
    console.log(files);

    //遍历当前目录的所有文件
    files.forEach(Element => {
        //拼接当前目录+当前目录的文件
        let fullPath = path.join(currentPath, Element);
        console.log(fullPath);

        //获取文件的状态和信息
        let stat = fs.statSync(Element);
        //判断是否为目录 true则继续
        if (stat.isDirectory()) {
            //获取目录下的所有文件名称（数组）
            let file = fs.readdir(fullPath, (err, filess) => {
                if (err) {
                    console.log(err);
                } else {
                    //遍历文件夹内的所有文件
                    if (filess.length > 0) {
                        filess.forEach(item => {
                            //判断是否为所需文件
                            console.log(item);
                            if (item === 'index.html' || item === 'default.html') {
                                //找到后拼接当前目录+文件名称
                                let tmpPath = path.join(fullPath, item);
                                //利用读取文件流 将地址响应给浏览器
                                fs.createReadStream(tmpPath).pipe(res);
                            }
                        })
                    }
                }
            })
        }
    })
}).listen(port);

console.log(`http://127.0.0.1:${port}`);

/*

问题： 404应该写在哪里呢?

*/

//2.一个有点挑战的文件服务器（从几百个几千个文件夹里面找到index）
